package com.sys.utils;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

/**
 * 去掉key和value的前后空格
 */
public class ConfigReader3 {

    private Map<String,String> map = new HashMap<>();

    public void read(String fileName,String charset) throws IOException {
        FileInputStream fis = null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
            fis = new FileInputStream(fileName);
            // 字节流转字符流，可以指定编码格式
            isr = new InputStreamReader(fis,charset);
            br = new BufferedReader(isr);

            // 读取一行
            String line = null;
            while( ( line = br.readLine() ) != null){ // 读取的行不为null，说明后面还有内容，就可以继续读

                // 判断line 不是空字符串时，才进行操作
                if("".equals(line)){ // String类的equals()方法是比较字符串的内容
                    continue;
                }
                if(line.startsWith("#")){// 开头是#号的，当做注释处理
                    continue;
                }
                int i = line.indexOf("=");
                // 当一行中没有 = 时，会报错，这里做了判断
                if(i == -1){
                    continue;
                }

                // 拆分出key
                String key = line.substring(0, i).trim();
                // 拆分出value
                String value = line.substring(i+1).trim();

                map.put(key,value);

            }

        } catch (FileNotFoundException e) {
            throw e;
        } catch (IOException e) {
            throw e;
        } finally {

            if(br !=null){
                try {
                    br.close();
                } catch (IOException e) {
                    throw e;
                }
            }
            if(isr!=null){ // 先打开的后关闭
                try {
                    isr.close();
                } catch (IOException e) {
                    throw e;
                }
            }
            if(fis!=null){ // 先打开的后关闭
                try {
                    fis.close();
                } catch (IOException e) {
                    throw e;
                }
            }

        }
    }

    /**
     * 根据key取出value值
     * @param key
     * @return
     */
    public String get(String key){
        return map.get(key);
    }
}
